+2008-05-31 Kristian Rietveld <kris@imendio.com>
+
+ Bug 530146 - Setting non-string tooltip with
+ gtk_tree_view_set_tooltip_column() segfaults
+
+ * gtk/gtktreeview.c (gtk_tree_view_set_tooltip_query_cb): use
+ gtk_tree_model_get_value() and explicitly transform the value to a
+ string before setting it as tooltip.
+
2008-05-30 Tor Lillqvist <tml@novell.com>
* modules/engines/ms-windows/msw_style.h
GtkTooltip *tooltip,
gpointer data)
{
- gchar *str;
+ GValue value = { 0, };
+ GValue transformed = { 0, };
GtkTreeIter iter;
GtkTreePath *path;
GtkTreeModel *model;
&model, &path, &iter))
return FALSE;
- gtk_tree_model_get (model, &iter, tree_view->priv->tooltip_column, &str, -1);
+ gtk_tree_model_get_value (model, &iter,
+ tree_view->priv->tooltip_column, &value);
- if (!str)
+ g_value_init (&transformed, G_TYPE_STRING);
+
+ if (!g_value_transform (&value, &transformed))
+ {
+ g_value_unset (&value);
+ gtk_tree_path_free (path);
+
+ return FALSE;
+ }
+
+ g_value_unset (&value);
+
+ if (!g_value_get_string (&transformed))
{
+ g_value_unset (&transformed);
gtk_tree_path_free (path);
+
return FALSE;
}
- gtk_tooltip_set_markup (tooltip, str);
+ gtk_tooltip_set_markup (tooltip, g_value_get_string (&transformed));
gtk_tree_view_set_tooltip_row (tree_view, tooltip, path);
gtk_tree_path_free (path);
- g_free (str);
+ g_value_unset (&transformed);
return TRUE;
}